Use gunichar instead of gint when appropriate in the interfaces
authorHavoc Pennington <hp@redhat.com>
Wed, 21 Jun 2000 18:51:36 +0000 (18:51 +0000)
committerHavoc Pennington <hp@src.gnome.org>
Wed, 21 Jun 2000 18:51:36 +0000 (18:51 +0000)
2000-06-21  Havoc Pennington  <hp@redhat.com>

* gtk/gtktextiter.h: Use gunichar instead of gint when appropriate
in the interfaces

* gtk/gtktexttypes.c: Remove UTF functions, use glib
stuff instead when possible.

* gtk/gtktexttypes.h: Delete some unused constants

* gtktextbtree.c, gtktextiter.c, gtktextsegment.c, gtktextview.c,
testtextbuffer.c: use glib instead of custom unicode routines

16 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtktextbtree.c
gtk/gtktextiter.c
gtk/gtktextiter.h
gtk/gtktextsegment.c
gtk/gtktexttypes.c
gtk/gtktexttypes.h
gtk/gtktextview.c
gtk/testtextbuffer.c
tests/testtextbuffer.c

index cf9d3d166dbac0848c036436a4c6836427766781..f33f1c3e38abd7e83766bc6750a4f9dfef0c9ede 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2000-06-21  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextiter.h: Use gunichar instead of gint when appropriate
+       in the interfaces
+
+       * gtk/gtktexttypes.c: Remove UTF functions, use glib 
+       stuff instead when possible.
+
+       * gtk/gtktexttypes.h: Delete some unused constants
+
+       * gtktextbtree.c, gtktextiter.c, gtktextsegment.c, gtktextview.c,
+       testtextbuffer.c: use glib instead of custom unicode routines
+
 Wed Jun 21 12:50:58 2000  Owen Taylor  <otaylor@redhat.com>
 
        * docs/es/: Removed mistakenly added generated sgml
index cf9d3d166dbac0848c036436a4c6836427766781..f33f1c3e38abd7e83766bc6750a4f9dfef0c9ede 100644 (file)
@@ -1,3 +1,16 @@
+2000-06-21  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextiter.h: Use gunichar instead of gint when appropriate
+       in the interfaces
+
+       * gtk/gtktexttypes.c: Remove UTF functions, use glib 
+       stuff instead when possible.
+
+       * gtk/gtktexttypes.h: Delete some unused constants
+
+       * gtktextbtree.c, gtktextiter.c, gtktextsegment.c, gtktextview.c,
+       testtextbuffer.c: use glib instead of custom unicode routines
+
 Wed Jun 21 12:50:58 2000  Owen Taylor  <otaylor@redhat.com>
 
        * docs/es/: Removed mistakenly added generated sgml
index cf9d3d166dbac0848c036436a4c6836427766781..f33f1c3e38abd7e83766bc6750a4f9dfef0c9ede 100644 (file)
@@ -1,3 +1,16 @@
+2000-06-21  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextiter.h: Use gunichar instead of gint when appropriate
+       in the interfaces
+
+       * gtk/gtktexttypes.c: Remove UTF functions, use glib 
+       stuff instead when possible.
+
+       * gtk/gtktexttypes.h: Delete some unused constants
+
+       * gtktextbtree.c, gtktextiter.c, gtktextsegment.c, gtktextview.c,
+       testtextbuffer.c: use glib instead of custom unicode routines
+
 Wed Jun 21 12:50:58 2000  Owen Taylor  <otaylor@redhat.com>
 
        * docs/es/: Removed mistakenly added generated sgml
index cf9d3d166dbac0848c036436a4c6836427766781..f33f1c3e38abd7e83766bc6750a4f9dfef0c9ede 100644 (file)
@@ -1,3 +1,16 @@
+2000-06-21  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextiter.h: Use gunichar instead of gint when appropriate
+       in the interfaces
+
+       * gtk/gtktexttypes.c: Remove UTF functions, use glib 
+       stuff instead when possible.
+
+       * gtk/gtktexttypes.h: Delete some unused constants
+
+       * gtktextbtree.c, gtktextiter.c, gtktextsegment.c, gtktextview.c,
+       testtextbuffer.c: use glib instead of custom unicode routines
+
 Wed Jun 21 12:50:58 2000  Owen Taylor  <otaylor@redhat.com>
 
        * docs/es/: Removed mistakenly added generated sgml
index cf9d3d166dbac0848c036436a4c6836427766781..f33f1c3e38abd7e83766bc6750a4f9dfef0c9ede 100644 (file)
@@ -1,3 +1,16 @@
+2000-06-21  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextiter.h: Use gunichar instead of gint when appropriate
+       in the interfaces
+
+       * gtk/gtktexttypes.c: Remove UTF functions, use glib 
+       stuff instead when possible.
+
+       * gtk/gtktexttypes.h: Delete some unused constants
+
+       * gtktextbtree.c, gtktextiter.c, gtktextsegment.c, gtktextview.c,
+       testtextbuffer.c: use glib instead of custom unicode routines
+
 Wed Jun 21 12:50:58 2000  Owen Taylor  <otaylor@redhat.com>
 
        * docs/es/: Removed mistakenly added generated sgml
index cf9d3d166dbac0848c036436a4c6836427766781..f33f1c3e38abd7e83766bc6750a4f9dfef0c9ede 100644 (file)
@@ -1,3 +1,16 @@
+2000-06-21  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextiter.h: Use gunichar instead of gint when appropriate
+       in the interfaces
+
+       * gtk/gtktexttypes.c: Remove UTF functions, use glib 
+       stuff instead when possible.
+
+       * gtk/gtktexttypes.h: Delete some unused constants
+
+       * gtktextbtree.c, gtktextiter.c, gtktextsegment.c, gtktextview.c,
+       testtextbuffer.c: use glib instead of custom unicode routines
+
 Wed Jun 21 12:50:58 2000  Owen Taylor  <otaylor@redhat.com>
 
        * docs/es/: Removed mistakenly added generated sgml
index cf9d3d166dbac0848c036436a4c6836427766781..f33f1c3e38abd7e83766bc6750a4f9dfef0c9ede 100644 (file)
@@ -1,3 +1,16 @@
+2000-06-21  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtktextiter.h: Use gunichar instead of gint when appropriate
+       in the interfaces
+
+       * gtk/gtktexttypes.c: Remove UTF functions, use glib 
+       stuff instead when possible.
+
+       * gtk/gtktexttypes.h: Delete some unused constants
+
+       * gtktextbtree.c, gtktextiter.c, gtktextsegment.c, gtktextview.c,
+       testtextbuffer.c: use glib instead of custom unicode routines
+
 Wed Jun 21 12:50:58 2000  Owen Taylor  <otaylor@redhat.com>
 
        * docs/es/: Removed mistakenly added generated sgml
index ebbe0d92e81d3ddc3a6a593d5e1437f74fd196fd..ee2afb1c31fab30c38c5cb49337351aa62ca0d14 100644 (file)
@@ -3369,7 +3369,7 @@ gtk_text_line_byte_to_char (GtkTextLine *line,
   else
     {
       if (seg->type == &gtk_text_char_type)
-        return char_offset + gtk_text_view_num_utf_chars(seg->body.chars, byte_offset);
+        return char_offset + g_utf8_strlen (seg->body.chars, byte_offset);
       else
         {
           g_assert(seg->char_count == 1);
@@ -3594,8 +3594,7 @@ gtk_text_line_byte_to_char_offsets(GtkTextLine *line,
 
   if (seg->type == &gtk_text_char_type)
     {
-      *seg_char_offset = gtk_text_view_num_utf_chars(seg->body.chars,
-                                                     offset);
+      *seg_char_offset = g_utf8_strlen(seg->body.chars, offset);
 
       g_assert(*seg_char_offset < seg->char_count);
       
@@ -3643,11 +3642,10 @@ gtk_text_line_char_to_byte_offsets(GtkTextLine *line,
       *seg_byte_offset = 0;
       while (offset > 0)
         {
-          GtkTextUniChar ch;
           gint bytes;
+          const char * start = seg->body.chars + *seg_byte_offset;
           
-          bytes = gtk_text_utf_to_unichar(seg->body.chars + *seg_byte_offset,
-                                          &ch);
+          bytes = g_utf8_next_char (start) - start;
           *seg_byte_offset += bytes;
           offset -= 1;
         }
index 8cc5f783e20a7ea7c6590015f7831eaff56ca398..953045e0b4ebe0ab62eb0852c6d7d837f5fac2d9 100644 (file)
@@ -575,7 +575,7 @@ gtk_text_iter_get_line_byte(const GtkTextIter *iter)
  * Dereferencing
  */
 
-gint
+gunichar
 gtk_text_iter_get_char(const GtkTextIter *iter)
 {
   GtkTextRealIter *real;
@@ -594,15 +594,10 @@ gtk_text_iter_get_char(const GtkTextIter *iter)
   
   if (real->segment->type == &gtk_text_char_type)
     {
-      GtkTextUniChar ch;
-
       ensure_byte_offsets(real);
       
-      gtk_text_utf_to_unichar(real->segment->body.chars +
-                               real->segment_byte_offset,
-                               &ch);
-
-      return ch;
+      return g_utf8_get_char (real->segment->body.chars +
+                              real->segment_byte_offset);
     }
   else
     {
@@ -1018,11 +1013,10 @@ forward_char(GtkTextRealIter *real)
       if (real->line_byte_offset >= 0)
         {
           gint bytes;
-          GtkTextUniChar ch;
-
-          bytes = gtk_text_utf_to_unichar(real->segment->body.chars +
-                                           real->segment_byte_offset,
-                                           &ch);
+          const char * start =
+            real->segment->body.chars + real->segment_byte_offset;
+          
+          bytes = g_utf8_next_char (start) - start;
 
           real->line_byte_offset += bytes;
           real->segment_byte_offset += bytes;
@@ -1281,10 +1275,9 @@ gtk_text_iter_backward_chars(GtkTextIter *iter, gint count)
           i = 0;
           while (i < real->segment_char_offset)
             {
-              GtkTextUniChar ch;
-              new_byte_offset +=
-                gtk_text_utf_to_unichar(real->segment->body.chars + new_byte_offset,
-                                         &ch);
+              const char * start = real->segment->body.chars + new_byte_offset;
+              new_byte_offset += g_utf8_next_char (start) - start;
+
               ++i;
             }
       
@@ -1464,14 +1457,14 @@ gtk_text_iter_backward_lines(GtkTextIter *iter, gint count)
 }
 
 static gboolean
-is_word_char(GtkTextUniChar ch, gpointer user_data)
+is_word_char(gunichar ch, gpointer user_data)
 {
   /* will likely need some i18n help FIXME */
   return isalpha(ch);
 }
 
 static gboolean
-is_not_word_char(GtkTextUniChar ch, gpointer user_data)
+is_not_word_char(gunichar ch, gpointer user_data)
 {
   return !is_word_char(ch, user_data);
 }
@@ -2339,10 +2332,8 @@ gtk_text_iter_check(const GtkTextIter *iter)
           gint char_offset = 0;
           while (char_offset < seg_char_offset)
             {
-              GtkTextUniChar ch;
-              byte_offset +=
-                gtk_text_utf_to_unichar(char_segment->body.chars + byte_offset,
-                                         &ch);
+              const char * start = char_segment->body.chars + byte_offset;
+              byte_offset += g_utf8_next_char (start) - start;
               char_offset += 1;
             }
 
@@ -2350,8 +2341,7 @@ gtk_text_iter_check(const GtkTextIter *iter)
             g_error("byte offset did not correspond to char offset");
 
           char_offset =
-            gtk_text_view_num_utf_chars(char_segment->body.chars,
-                                    seg_byte_offset);
+            g_utf8_strlen (char_segment->body.chars, seg_byte_offset);
 
           if (char_offset != seg_char_offset)
             g_error("char offset did not correspond to byte offset");
index 579fe859bcaabacef8a56f6bd267f26388f7164f..1b932202634f8f643286d69265654caec4ac0bca 100644 (file)
@@ -54,7 +54,7 @@ gint     gtk_text_iter_get_line_byte   (const GtkTextIter *iter);
 /*
  * "Dereference" operators
  */
-gint     gtk_text_iter_get_char          (const GtkTextIter  *iter);
+gunichar gtk_text_iter_get_char          (const GtkTextIter  *iter);
 
 /* includes the 0xFFFD char for pixmaps/widgets, so char offsets
    into the returned string map properly into buffer char offsets */
@@ -144,7 +144,7 @@ gboolean gtk_text_iter_forward_find_tag_toggle (GtkTextIter *iter,
 gboolean gtk_text_iter_backward_find_tag_toggle (GtkTextIter *iter,
                                                   GtkTextTag  *tag);
 
-typedef gboolean (* GtkTextViewCharPredicate) (guint16 ch, gpointer user_data);
+typedef gboolean (* GtkTextViewCharPredicate) (gunichar ch, gpointer user_data);
 
 gboolean gtk_text_iter_forward_find_char      (GtkTextIter *iter,
                                               GtkTextViewCharPredicate pred,
index e4effa1b5c92a25eca9467f5aa67f06d42515032..38e905865b69f387725a0a66e9b7d0db2a9de9a1 100644 (file)
@@ -177,7 +177,7 @@ char_segment_self_check(GtkTextLineSegment *seg)
       g_error("char_segment_check_func: segment has wrong size");
     }
 
-  if (gtk_text_view_num_utf_chars(seg->body.chars, seg->byte_count) != seg->char_count)
+  if (g_utf8_strlen (seg->body.chars, seg->byte_count) != seg->char_count)
     {
       g_error("char segment has wrong character count");
     }
@@ -197,7 +197,7 @@ char_segment_new(const gchar *text, guint len)
   memcpy(seg->body.chars, text, len);
   seg->body.chars[len] = '\0';
 
-  seg->char_count = gtk_text_view_num_utf_chars(seg->body.chars, seg->byte_count);
+  seg->char_count = g_utf8_strlen (seg->body.chars, seg->byte_count);
 
   if (gtk_debug_flags & GTK_DEBUG_TEXT)
     char_segment_self_check(seg);
@@ -224,7 +224,7 @@ char_segment_new_from_two_strings(const gchar *text1, guint len1,
 
   /* In principle this function could probably take chars1 and chars2
      as args, since it's typically used to merge two char segments */
-  seg->char_count = gtk_text_view_num_utf_chars(seg->body.chars, seg->byte_count);
+  seg->char_count = g_utf8_strlen (seg->body.chars, seg->byte_count);
 
   if (gtk_debug_flags & GTK_DEBUG_TEXT)
     char_segment_self_check(seg);
index 1dfa16bfc4017f26bc66d65ac9b0cf7643d12889..c9ba97df6bd3a8e2deecce3b475145b8459d99a7 100644 (file)
@@ -42,70 +42,12 @@ gtk_text_view_tab_array_unref(GtkTextTabArray *tab_array)
     }
 }
 
-/*
- * Unicode stubs (these are wrappers to make libunicode match the Tcl/Tk
- * API, eventually should just use libunicode/Pango directly)
+/* These are used to represent embedded non-character objects
+ * if you return a string representation of a text buffer
  */
-
-#if 0
-static void
-trigger_efence(const gchar *str, gint len)
-{
-  gchar ch;
-  gint i = 0;
-  while (i < len)
-    {
-      ch = str[i];
-      ((gchar*)str)[i] = ch;
-      ++i;
-    }
-}
-#else
-#define trigger_efence(foo,bar)
-#endif
-
-const GtkTextUniChar gtk_text_unknown_char = 0xFFFD;
+const gunichar gtk_text_unknown_char = 0xFFFD;
 const gchar gtk_text_unknown_char_utf8[] = { 0xEF, 0xBF, 0xBD, '\0' };
 
-gint
-gtk_text_view_num_utf_chars(const gchar *str, gint len)
-{
-  trigger_efence(str, len);
-  return g_utf8_strlen(str, len);
-}
-
-/* FIXME we need a version of this function with error handling, so we
-   can screen incoming UTF8 for validity. */
-
-gint
-gtk_text_utf_to_unichar(const gchar *str, GtkTextUniChar *chPtr)
-{
-  gunichar ch;
-
-  ch = g_utf8_get_char (str);
-
-  if (ch == (gunichar)-1)
-    g_error("Bad UTF8, need to add some error checking so this doesn't crash the program");
-
-  *chPtr = ch;
-
-  trigger_efence(str, end - str);
-  
-  return g_utf8_next_char (str) - str;
-}
-
-gchar*
-gtk_text_utf_prev(const gchar *str, const gchar *start)
-{
-  gchar *retval;
-
-  trigger_efence(start, str - start);
-  
-  retval = g_utf8_find_prev_char (start, str);
-
-  return retval;
-}
-
 static inline gboolean
 inline_byte_begins_utf8_char(const gchar *byte)
 {
@@ -115,7 +57,6 @@ inline_byte_begins_utf8_char(const gchar *byte)
 gboolean
 gtk_text_byte_begins_utf8_char(const gchar *byte)
 {
-  trigger_efence(byte, 1);
   return inline_byte_begins_utf8_char(byte);
 }
 
@@ -123,11 +64,12 @@ guint
 gtk_text_utf_to_latin1_char(const gchar *p, guchar *l1_ch)
 {
   guint charlen;
-  GtkTextUniChar ch;
+  gunichar ch;
 
   g_assert(inline_byte_begins_utf8_char(p));
   
-  charlen = gtk_text_utf_to_unichar(p, &ch);
+  charlen = g_utf8_next_char (p) - p;
+  ch = g_utf8_get_char (p);
   
   g_assert(ch != '\0');
   
@@ -145,8 +87,6 @@ gtk_text_utf_to_latin1(const gchar *p, gint len)
   GString *str;
   guint i;
   gchar *retval;
-
-  trigger_efence(p, len);
   
   str = g_string_new("");
 
@@ -169,54 +109,6 @@ gtk_text_utf_to_latin1(const gchar *p, gint len)
   return retval;
 }
 
-static int
-gtk_text_view_unichar_to_utf(GtkTextUniChar c, char *outbuf)
-{
-  size_t len = 0;
-  int first;
-  int i;
-
-  if (c < 0x80)
-    {
-      first = 0;
-      len = 1;
-    }
-  else if (c < 0x800)
-    {
-      first = 0xc0;
-      len = 2;
-    }
-  else if (c < 0x10000)
-    {
-      first = 0xe0;
-      len = 3;
-    }
-   else if (c < 0x200000)
-    {
-      first = 0xf0;
-      len = 4;
-    }
-  else if (c < 0x4000000)
-    {
-      first = 0xf8;
-      len = 5;
-    }
-  else
-    {
-      first = 0xfc;
-      len = 6;
-    }
-
-  for (i = len - 1; i > 0; --i)
-    {
-      outbuf[i] = (c & 0x3f) | 0x80;
-      c >>= 6;
-    }
-  outbuf[0] = c | first;
-
-  return len;
-}
-
 gchar*
 gtk_text_latin1_to_utf (const gchar *latin1, gint len)
 {
@@ -232,7 +124,7 @@ gtk_text_latin1_to_utf (const gchar *latin1, gint len)
       gchar utf[7];
       gint count;
 
-      count = gtk_text_view_unichar_to_utf((guchar)latin1[i], utf);
+      count = g_unichar_to_utf8 ((guchar)latin1[i], utf);
       
       utf[count] = '\0';
       
@@ -245,3 +137,6 @@ gtk_text_latin1_to_utf (const gchar *latin1, gint len)
   g_string_free(retval, FALSE);
   return str;
 }
+
+
+
index d8c284a38a11825388915e6a08c9e8429c77a533..65c3cf06533f530e613e7ababa7ca0262fa494f8 100644 (file)
@@ -8,9 +8,6 @@ extern "C" {
 #include <glib.h>
 
 #include <gtk/gtktextbuffer.h>
-
-typedef unsigned short GtkTextUniChar; /* Unicode character */
-
 #include <gtk/gtktexttagprivate.h>
 
 typedef struct _GtkTextLine GtkTextLine;
@@ -96,20 +93,6 @@ GtkTextTabArray *gtk_text_view_tab_array_new   (guint             size);
 void              gtk_text_view_tab_array_ref   (GtkTextTabArray *tab_array);
 void              gtk_text_view_tab_array_unref (GtkTextTabArray *tab_array);
 
-/*
- * The constant below is used to specify a line when what is really
- * wanted is the entire text.  For now, just use a very big number.
- */
-
-#define GTK_TEXT_END_OF_TEXT 1000000
-
-/*
- * The following definition specifies the maximum number of characters
- * needed in a string to hold a position specifier.
- */
-
-#define GTK_TEXT_POS_CHARS 30
-
 /*
  * Declarations for variables shared among the text-related files:
  */
@@ -131,16 +114,17 @@ extern GtkTextLineSegmentClass gtk_text_view_child_type;
  * UTF 8 Stubs
  */
 
-extern const GtkTextUniChar gtk_text_unknown_char;
+extern const gunichar gtk_text_unknown_char;
 extern const gchar gtk_text_unknown_char_utf8[];
 
-gint gtk_text_view_num_utf_chars(const gchar *chars, gint len);
-gint gtk_text_utf_to_unichar(const gchar *p, GtkTextUniChar *ch);
-gchar *gtk_text_utf_prev(const gchar *p, const gchar *p2);
-gchar *gtk_text_utf_to_latin1(const gchar *p, gint len);
-gboolean gtk_text_byte_begins_utf8_char(const gchar *byte);
-guint gtk_text_utf_to_latin1_char(const gchar *p, guchar *ch);
-gchar *gtk_text_latin1_to_utf (const gchar *latin1, gint len);
+gboolean gtk_text_byte_begins_utf8_char (const gchar *byte);
+guint    gtk_text_utf_to_latin1_char    (const gchar *p,
+                                         guchar      *l1_ch);
+gchar*   gtk_text_utf_to_latin1         (const gchar *p,
+                                         gint         len);
+gchar*   gtk_text_latin1_to_utf         (const gchar *latin1,
+                                         gint         len);
+
 
 #ifdef __cplusplus
 }
index 778442538a7b9fefec7315644668e85040606e3f..124f16dbfb71736a495926a9442b3331cf0df7d6 100644 (file)
@@ -1932,13 +1932,13 @@ gtk_text_view_scroll_text (GtkTextView *text_view,
 }
 
 static gboolean
-whitespace (GtkTextUniChar ch, gpointer user_data)
+whitespace (gunichar ch, gpointer user_data)
 {
   return (ch == ' ' || ch == '\t');
 }
 
 static gboolean
-not_whitespace (GtkTextUniChar ch, gpointer user_data)
+not_whitespace (gunichar ch, gpointer user_data)
 {
   return !whitespace (ch, user_data);
 }
index dfd95bf0a4f06711ee3d4c9ce496af2aa018a761..884ed0f887b8cbeff1dd16f846a092edc78b3477 100644 (file)
@@ -14,14 +14,14 @@ main(int argc, char** argv)
 {
   GtkTextBuffer *buffer;
   int n;
-  GtkTextUniChar ch;
+  gunichar ch;
   GtkTextIter start, end;
   
   gtk_init(&argc, &argv);
 
   /* Check UTF8 unknown char thing */
-  g_assert(gtk_text_view_num_utf_chars(gtk_text_unknown_char_utf8, 3) == 1);
-  gtk_text_utf_to_unichar(gtk_text_unknown_char_utf8, &ch);
+  g_assert(g_utf8_strlen (gtk_text_unknown_char_utf8, 3) == 1);
+  ch = g_utf8_get_char (gtk_text_unknown_char_utf8);
   g_assert(ch == gtk_text_unknown_char);
   
   /* First, we turn on btree debugging. */
index dfd95bf0a4f06711ee3d4c9ce496af2aa018a761..884ed0f887b8cbeff1dd16f846a092edc78b3477 100644 (file)
@@ -14,14 +14,14 @@ main(int argc, char** argv)
 {
   GtkTextBuffer *buffer;
   int n;
-  GtkTextUniChar ch;
+  gunichar ch;
   GtkTextIter start, end;
   
   gtk_init(&argc, &argv);
 
   /* Check UTF8 unknown char thing */
-  g_assert(gtk_text_view_num_utf_chars(gtk_text_unknown_char_utf8, 3) == 1);
-  gtk_text_utf_to_unichar(gtk_text_unknown_char_utf8, &ch);
+  g_assert(g_utf8_strlen (gtk_text_unknown_char_utf8, 3) == 1);
+  ch = g_utf8_get_char (gtk_text_unknown_char_utf8);
   g_assert(ch == gtk_text_unknown_char);
   
   /* First, we turn on btree debugging. */